unit TransferenciaRecordFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ComCtrls, DBCtrls, ActnList, ExtCtrls, EditBtn, MainRecordFr;

type

  { TTransferenciaRecordFrame }

  TTransferenciaRecordFrame = class(TMainRecordFrame)
    ValorCalcEdit: TCalcEdit;
    DBCalendar1: TDBCalendar;
    DBEdit1: TDBEdit;
    dataDBedit: TDBEdit;
    Label4: TLabel;
    OrigemLookup: TDBLookupListBox;
    DestinoLookup: TDBLookupListBox;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    procedure CancelarActionExecute(Sender: TObject);
    procedure FecharActionExecute(Sender: TObject);
    procedure InserirActionExecute(Sender: TObject);
    procedure SalvarActionExecute(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
    IDCaixa: string;
  end;

implementation

uses ContaMovimentacaoDM, Initializator, MainFr, ContaDM;

{ TTransferenciaRecordFrame }

procedure TTransferenciaRecordFrame.CancelarActionExecute(Sender: TObject);
begin
  InserirAction.Enabled := True;
  FecharAction.Enabled := True;
  CancelarAction.Enabled := False;
  SalvarAction.Enabled := False;
end;

procedure TTransferenciaRecordFrame.FecharActionExecute(Sender: TObject);
begin
  inherited;
  TheControl.ShowFrame(TMainFrame(CaixaFrame));
end;

procedure TTransferenciaRecordFrame.InserirActionExecute(Sender: TObject);
var
  Data: string;
begin
  Data := ContaMovimentacaoData.BuscaData();
  InserirAction.Enabled := False;
  FecharAction.Enabled := False;
  SalvarAction.Enabled := True;
  CancelarAction.Enabled := True;
  dataDBedit.Text := Data;
  DBCalendar1.Date := Data;
end;

procedure TTransferenciaRecordFrame.SalvarActionExecute(Sender: TObject);
begin
  if OrigemLookup.GetSelectedText <> DestinoLookup.GetSelectedText then begin
    //Verifica se foi selecionados todos as contas e o valor a ser transferido
    if (OrigemLookup.GetSelectedText <> '') or (DestinoLookup.GetSelectedText <> '') or
      (ValorCalcEdit.Text <> '') then begin
      //Se alguma das contas for o caixa tem que verificar se o caixa está aberto
      if (OrigemLookup.GetSelectedText = 'CAIXA') or
        (DestinoLookup.GetSelectedText = 'CAIXA') then begin
        IDCaixa := ContaMovimentacaoData.BuscaIDCaixa();
        if IDCaixa = '' then begin
          if MessageDlg('Confirmação', 'Caixa não está Aberto! Deseja Abrir?',
            mtConfirmation, mbYesNo, 0) = mrYes then begin
            TheControl.ShowFrame(TMainFrame(CaixaInicioRecordFrame));
          end else begin
            ShowMessage('Escolha outra Conta!');
          end;
        end else begin
          ContaMovimentacaoData.RealizaTransferencia(IDCaixa,
            DestinoLookup.GetSelectedText, OrigemLookup.GetSelectedText,
            DestinoLookup.KeyValue, OrigemLookup.KeyValue, ValorCalcEdit.Text);
          ShowMessage('Transferencia Realizada com Sucesso!');
          InserirAction.Enabled := True;
          FecharAction.Enabled := True;
          SalvarAction.Enabled := False;
          CancelarAction.Enabled := False;
          dataDBedit.Text := '';
          ValorCalcEdit.Text := '0';
          ContaData.ContaZQuery.Refresh();
        end;
      end else begin
        ContaMovimentacaoData.RealizaTransferencia(IDCaixa,
          DestinoLookup.GetSelectedText, OrigemLookup.GetSelectedText,
          DestinoLookup.KeyValue, OrigemLookup.KeyValue, ValorCalcEdit.Text);
        ShowMessage('Transferencia Realizada com Sucesso!');
        InserirAction.Enabled := True;
        FecharAction.Enabled := True;
        SalvarAction.Enabled := False;
        CancelarAction.Enabled := False;
        dataDBedit.Text := '';
        ValorCalcEdit.Text := '0';
        ContaData.ContaZQuery.Refresh();
      end;
    end else begin
      ShowMessage('Selecionar as Contas e Inserir um valor!');
    end;
  end else begin
    ShowMessage('As contas são iguais!');
  end;
end;


initialization
  {$I transferenciarecordfr.lrs}

end.
